﻿# coding: UTF-8
# Name: namedtuple
# Author: LYC
# Created:

import sys
from collections import namedtuple

#使用指定类名和属性快速创建tuple的一个子类
point = namedtuple("Point", ("x", "y"))

#point是类Point的一个引用
print point

#point可以使用参数列表和参数赋值的方式初始化
p = point(5, y=11)
print p

#使用对象的属性
#方法1:像tuple一样使用
print p[0],p[1]

#方法2:像对象一样使用
print p.x,p.y

#对象是mutable的,不能修改
try:
    p.x = 30
except AttributeError:
    print p.x

#通过当前对象作为原型新建对象
#方法1:使用字典
d = p._asdict()
d["x"] = 30
a = point(**d)
print a

#方法1:使用_replace
b = p._replace(x=30)
print b
